package com.zuoshenge.tool.excel;

import com.alibaba.excel.EasyExcel;
import org.springframework.stereotype.Component;
  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;

import static com.alibaba.excel.EasyExcelFactory.readSheet;

@Component  
public abstract class BaseEasyExcelImport<T> {

    // 假设你有一个方法来获取数据模型的Class对象，这通常是一个泛型方法或传递Class<T>作为参数  
    protected abstract Class<T> getDataModelClass();  
  
    // 假设你有一个方法来获取泛型类型的MyDataService实例

    public void doImport(String filePath, int numberOfSheets, ExcelDataModelListener<T> excelDataModelListener) {
        // ... 其他代码保持不变 ...
        // Excel文件的路径
        // String filePath = "users/hollis/workspace/excel/test.xlsx";
        // 需要读取的sheet数量（这里假设文件确实包含这么多sheet）
        // int numberOfSheets = 20;
        // 创建一个固定大小的线程池，大小与sheet数量相同
        ExecutorService executor = Executors.newFixedThreadPool(numberOfSheets);
        // 遍历所有sheets
        for (int sheetNo = 0; sheetNo < numberOfSheets; sheetNo++) {
            final int finalSheetNo = sheetNo;
            // 向线程池提交一个任务
//            executor.submit(() -> {
//                // 使用EasyExcel读取指定的sheet，但具体的读取逻辑由子类实现
//                readSheet(finalSheetNo, EasyExcel.read(filePath, getDataModelClass(), myDataModelListener));
//            });
            EasyExcel.read(filePath, getDataModelClass(), excelDataModelListener)
                    .sheet(finalSheetNo) // 指定sheet号
                    .doRead(); // 开始读取操作
        }
    }

    // ... 可能还有其他的方法
}